package com.mini.grpc.spring.annotation;

import org.springframework.stereotype.Service;

import java.lang.annotation.*;

/**
 * 标记gRPC服务实现类的注解
 * 被此注解标记的类将自动注册为gRPC服务
 * 
 * @author Mini-gRPC
 */
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Service
public @interface GrpcService {
    
    /**
     * 服务名称，如果不指定则使用类名
     * 
     * @return 服务名称
     */
    String value() default "";
    
    /**
     * 服务描述
     * 
     * @return 服务描述
     */
    String description() default "";
    
    /**
     * 是否启用此服务
     * 
     * @return 是否启用
     */
    boolean enabled() default true;
    
    /**
     * 服务拦截器类列表
     * 这些拦截器将应用于此服务的所有方法
     * 
     * @return 拦截器类数组
     */
    Class<?>[] interceptors() default {};
    
    /**
     * 服务优先级，数值越小优先级越高
     * 用于控制服务注册顺序
     * 
     * @return 优先级
     */
    int priority() default 0;
} 